package com.heima.wemedia.interceptor;

import com.heima.model.wemedia.pojos.WmMaterial;
import com.heima.model.wemedia.pojos.WmUser;
import com.heima.wemedia.utils.WmThreadLocalUtil;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * 如果想让拦截器生效需要通过spring的配置类，注册这个拦截器
 */
public class WmTokenInterceptor implements HandlerInterceptor {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

        //登录请求直接放过。
        if (request.getRequestURI().contains("/login")){
            return true;
        }
        //拿到请求头里面的userId ，封装为WmUser放到线程对象里面
        String userId = request.getHeader("userId");
        WmUser wmUser = new WmUser();
        //发现问题了，这id设置不了，难道是因为它是自增的 ？？  应该设置给ApUserId？？
        Integer i1 = Integer.getInteger(userId);  //注意使用getIneger函数的并不能把一个str转为int ，反而得到一个null
        wmUser.setId(Integer.parseInt(userId));
        //放到线程对象
        WmThreadLocalUtil.set(wmUser);
        return true;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
         //清理线程中数据
        WmThreadLocalUtil.clear();
    }

}
